home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / audit < prev    next >
Text File  |  2009-11-03  |  4KB  |  135 lines

  1. #!/usr/bin/perl
  2. #
  3. # $Id: audit 1242 2008-04-24 19:24:02Z jrjohansen $
  4. #
  5. # ----------------------------------------------------------------------
  6. #    Copyright (c) 2005 Novell, Inc. All Rights Reserved.
  7. #
  8. #    This program is free software; you can redistribute it and/or
  9. #    modify it under the terms of version 2 of the GNU General Public
  10. #    License as published by the Free Software Foundation.
  11. #
  12. #    This program is distributed in the hope that it will be useful,
  13. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #    GNU General Public License for more details.
  16. #
  17. #    You should have received a copy of the GNU General Public License
  18. #    along with this program; if not, contact Novell, Inc.
  19. #
  20. #    To contact Novell about this file by physical or electronic mail,
  21. #    you may find current contact information at www.novell.com.
  22. # ----------------------------------------------------------------------
  23.  
  24. use strict;
  25. use FindBin;
  26. use Getopt::Long;
  27.  
  28. use Immunix::SubDomain;
  29.  
  30. use Data::Dumper;
  31.  
  32. use Locale::gettext;
  33. use POSIX;
  34.  
  35. # initialize the local poo
  36. setlocale(LC_MESSAGES, "");
  37. textdomain("apparmor-utils");
  38.  
  39. $UI_Mode = "text";
  40.  
  41. # options variables
  42. my $help = '';
  43.  
  44. GetOptions(
  45.     'dir|d=s' => \$profiledir,
  46.     'help|h'  => \$help,
  47. );
  48.  
  49. # tell 'em how to use it...
  50. &usage && exit if $help;
  51.  
  52. # let's convert it to full path...
  53. $profiledir = get_full_path($profiledir);
  54.  
  55. unless (-d $profiledir) {
  56.     UI_Important("Can't find subdomain profiles in $profiledir.");
  57.     exit 1;
  58. }
  59.  
  60. # what are we profiling?
  61. my @profiling = @ARGV;
  62.  
  63. unless (@profiling) {
  64.     @profiling = (UI_GetString("Please enter the program to switch to audit mode: ", ""));
  65. }
  66.  
  67. for my $profiling (@profiling) {
  68.  
  69.     next unless $profiling;
  70.  
  71.     my $fqdbin;
  72.     if (-e $profiling) {
  73.         $fqdbin = get_full_path($profiling);
  74.         chomp($fqdbin);
  75.     } else {
  76.         if ($profiling !~ /\//) {
  77.         opendir(DIR,$profiledir);
  78.         my @tmp_fqdbin = grep ( /$profiling/, readdir(DIR));
  79.         closedir(DIR);
  80.         if (scalar @tmp_fqdbin eq 1) {
  81.             $fqdbin = "$profiledir/$tmp_fqdbin[0]";
  82.         } else {
  83.                 my $which = which($profiling);
  84.                 if ($which) {
  85.                     $fqdbin = get_full_path($which);
  86.                 }
  87.         }
  88.         }
  89.     }
  90.  
  91.     if (-e $fqdbin) {
  92.  
  93.         my $filename;
  94.         if ($fqdbin =~ /^$profiledir\//) {
  95.             $filename = $fqdbin;
  96.         } else {
  97.             $filename = getprofilefilename($fqdbin);
  98.         }
  99.  
  100.         # argh, skip directories
  101.         next unless -f $filename;
  102.  
  103.         # skip rpm backup files
  104.         next if isSkippableFile($filename);
  105.  
  106.         printf(gettext('Setting %s to audit mode.'), $fqdbin);
  107.         print "\n";
  108.         setprofileflags($filename, "audit");
  109.  
  110.         my $cmd_info = qx(cat $filename | $parser -I$profiledir -r 2>&1 1>/dev/null);
  111.     if ($? != 0) {
  112.         UI_Info($cmd_info);
  113.         exit $?;
  114.     }
  115.  
  116. #          if check_for_subdomain();
  117.     } else {
  118.         if ($profiling =~ /^[^\/]+$/) {
  119.             UI_Info(sprintf(gettext('Can\'t find %s in the system path list.  If the name of the application is correct, please run \'which %s\' as a user with the correct PATH environment set up in order to find the fully-qualified path.'), $profiling, $profiling));
  120.             exit 1;
  121.         } else {
  122.             UI_Info(sprintf(gettext('%s does not exist, please double-check the path.') . $profiling));
  123.             exit 1;
  124.         }
  125.     }
  126. }
  127.  
  128. exit 0;
  129.  
  130. sub usage {
  131.     UI_Info(sprintf(gettext("usage: \%s [ -d /path/to/profiles ] [ program to switch to audit mode ]"), $0));
  132.     exit 0;
  133. }
  134.  
  135.